package client;

import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import marionito.domaine.Jeton;
import marionito.domaine.Joueur;
import marionito.domaine.Partie;
import marionito.usecases.GestionJoueurPartie;
import marionito.usecases.GestionJoueurs;
import marionito.usecases.GestionParties;

import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Test_JoueurPartieNG_marionito {

	private static GestionParties gp;
	private static GestionJoueurs gj;
	private static GestionJoueurPartie gjp;

	private String[] j1 = { "md", "mi", "Michel", "Debacker",
			"michel.debacker@ipl.be" };
	private String[] j2 = { "el", "em", "Emmeline", "Leconte",
			"emmeline.leconte@ipl.be" };
	private String[] j3 = { "oc", "ol", "Olivier", "Choquet",
			"olivier.choquet@ipl.be" };

	private static Joueur joueur1, joueur2, joueur3;
	private Partie partie;
	private Jeton jeton;
	private Jeton jeton1;
	
	@BeforeClass
	public void BeforeClass() {
		try {
			Context jndi = new InitialContext();
			gp = (GestionParties) jndi
					.lookup("ejb:marionitoEAR/marionitoEJB/GestionPartiesImpl!marionito.usecases.GestionParties");
			gj = (GestionJoueurs) jndi
					.lookup("ejb:marionitoEAR/marionitoEJB/GestionJoueursImpl!marionito.usecases.GestionJoueurs");
			gjp = (GestionJoueurPartie) jndi
					.lookup("ejb:marionitoEAR/marionitoEJB/GestionPartieJoueurImpl!marionito.usecases.GestionJPartieJoueur");
		} catch (NamingException e) {
			e.printStackTrace();
		}

		gj.inscrireJoueur(j1[0], j1[1], j1[2], j1[3], j1[4]);
		gj.inscrireJoueur(j2[0], j2[1], j2[2], j2[3], j2[4]);
		gj.inscrireJoueur(j3[0], j3[1], j3[2], j3[3], j3[4]);
		joueur1 = gj.seConnecter(j1[0], j1[1]);
		joueur2 = gj.seConnecter(j2[0], j2[1]);
		joueur3 = gj.seConnecter(j3[0], j3[1]);
		
		gp.creerPartie("test");
		partie = gp.rejoindrePartie("partie", j1[0]);
		partie = gp.rejoindrePartie("partie", j2[0]);
		partie = gp.rejoindrePartie("partie", j3[0]);
		partie.commencerPartie();
		jeton = new Jeton(1);
		jeton1 = new Jeton(2);
		
	}

	@Test
	public void verifPositionnementJeton() {
		assertTrue(gjp.verifPositionnementJeton("test", joueur1, 1, 1));
		
		assertNotNull(gp.ajouterJeton(joueur1, "test", jeton, "1"));
		
		assertFalse(gjp.verifPositionnementJeton("test", joueur1, 1, 1));
		assertTrue(gjp.verifPositionnementJeton("test", joueur1, 2, 1));
		
		assertNotNull(gp.ajouterJeton(joueur1, "test", jeton1, "2"));
	}
	
	@Test
	public void chargerToutTest() {
		assertNull(gjp.chargerTout(null));
	}
	

}
